package com.example.demo;//锁对于性能的影响
//锁的范围（粒度）
//加锁需要用到什么?临界资源（可控的资源）
//（唯一键的特性）
//数据库-表锁,行锁
//1.锁的对象是什么？2.不同生命周期的对象对于锁的范围有一定的影响
//锁是如何存储的
//jdk1.6以后，synchronized做了锁的优化（无锁-偏向锁-轻量级锁-重量级锁）
//synchronized底层自己来实现锁升级
//锁的竞争一定会带来性能开销-线程阻塞
//前提：大部分的情况下，锁不仅仅不存在竞争，而且是由同一个线程获得
//偏向锁：无锁状态-满足大部分情况
//轻量级锁:自旋+cas的方式来去争抢锁

public class SynchronizedTest {

    static Object lock = new Object();

    public synchronized void test(){

    }
    private void test1(){
        synchronized (this){

        }
    }
    private void test2(){
        synchronized (SynchronizedTest.class){

        }
    }

    public static void main(String[] args) {
        SynchronizedTest app = new SynchronizedTest();
        app.test1();
        //没办法实现独占锁
        SynchronizedTest app1 = new SynchronizedTest();
        app.test();
    }
}
